/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} l1
 * @param {ListNode} l2
 * @return {ListNode}
 * first，谁tm会有这么离谱问题。
 * shit，想用这种简单粗暴的方法的，
 * 通过测试用例：1565 / 1568
 * 原因是：数字过长会自动转成科学计数法，再转回来还会丢失精度
 * 1e+30： 1000000000000000000000000000001
 * 
   new Number(1e+30).toLocaleString().replaceAll(',','')
    '1000000000000000000000000000000'
 * 还是必须用进位的方式哇呜呜呜呜呜呜呜呜，瞬间不想弄le
 */
var addTwoNumbers = function(l1, l2) {
  let num1 = '';
  let num2 = '';
  let pre = new ListNode(0);
  let head = pre;
  while( l1 || l2 ){
    num1 += (l1? l1.val : '')
    num2 += (l2? l2.val : '')
    if( l1 ) l1 = l1.next
    if( l2 ) l2 = l2.next
  }
  let nums = (num1.split('').reverse().join('')-0) + (num2.split('').reverse().join('')-0)
  console.log(num1,num2)
  nums = (nums+'').split('').reverse().join('')
  console.log(nums,nums.length)
  for(let i = 0; i < nums.length ;i++){
    pre.next = new ListNode(nums.split('')[i] - 0)
    pre= pre.next
  }
  return head.next
};